package com.ruoyi.module.utils;

import cn.hutool.core.io.LineHandler;
import com.ruoyi.module.domain.BookInfo;
import com.ruoyi.module.service.CmBookInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;

@Slf4j
public class ErpFileLineHandler implements LineHandler {

    private final CmBookInfoService bookInfoService;
    private final String storeId;

    public ErpFileLineHandler(CmBookInfoService bookInfoService, String storeId) {
        this.bookInfoService = bookInfoService;
        this.storeId = storeId;
    }

    @Override
    public void handle(String line) {
        // 商品标识	ISBN	书名	作者	定价	折扣价	出版年月	版别	版别名称	分类	分类名称	大类	大类名称	货位	库存数量
        String[] split = line.split("\t");
        if ("商品标识".equals(split[0])) {
            return;
        }
        String spbs = StringUtils.trim(split[0]);

        BookInfo info = new BookInfo();
        info.setStordId(storeId);
        info.setSpbs(spbs); // 商品标识

        info.setTm(StringUtils.trim(split[1])); // ISBN
        info.setSm(StringUtils.trim(split[2])); // 书名
        info.setZyz(StringUtils.trim(split[3])); // 作者
        info.setCbrq(StringUtils.trim(split[6])); // 出版年月

        String jwh = StringUtils.trim(split[13]);
        info.setJwh(jwh); // 价位号

        String floor = StringUtils.substring(jwh, 0, 1);
        info.setFloor(floor); // 楼层

        info.setCbsmc(StringUtils.trim(split[8])); // 出版社
        info.setYxxldm(StringUtils.trim(split[9])); // 营销分类
        info.setDj(new BigDecimal(split[4])); // 定价
        info.setDiscount(new BigDecimal(split[5])); // 折扣价
        info.setKcs(BigDecimal.ZERO); // 库存数
        info.setZjs(new BigDecimal(split[14])); // 在架数
        info.setCtime(System.currentTimeMillis()); // 处理时间

        ErpFileStorage.infos.add(info);

        ErpFileStorage.lineNum++;

        if (!CollectionUtils.isEmpty(ErpFileStorage.infos) && ErpFileStorage.infos.size() > 50) {
            log.info("batchInsert!!!!!!!!!!!!!!!!!!!!!!");
            // 先清除已有的图书
            bookInfoService.batchUpdateBookInfo(ErpFileStorage.infos);
            ErpFileStorage.infos.clear();
        }
    }
}
